package controller

import (
	"github.com/gin-gonic/gin"
	"my_music_server/common"
	"my_music_server/config/middle_ware"
	"my_music_server/model"
	"my_music_server/service"
	"net/http"
)

// 必须是无状态的成员变量【保证线程安全】
var _userService = &service.UserService{}

// Login 用户登录接口
// @Summary 用户登录接口
// @Description 用户登录接口
// @Tags 用户相关接口
// @Accept application/json
// @Produce application/json
// @Param loginVO body model.LoginVO true "用户信息"
// @Success 200 {object} common.R
// @Router /login [get]
func Login(c *gin.Context) {
	//获取LoginVO对象实例
	loginVO := model.LoginVO{}
	err := c.ShouldBind(&loginVO)
	if err != nil {
		panic(err)
	}
	result := _userService.Login(loginVO)
	c.JSON(http.StatusOK, common.Ok().DataMP(result))
	//c.JSON(http.StatusOK, common.Ok().DataKV("loginVO", &loginVO))
}

// Register 用户注册接口
// @Summary 用户注册接口
// @Description 用户注册接口
// @Tags 用户相关接口
// @Accept application/json
// @Produce application/json
// @Param RegisterVo body model.RegisterVo true "用户信息"
// @Success 200 {object} common.R
// @Router /register [post]
func Register(c *gin.Context) {
	registerVo := model.RegisterVo{}
	err := c.ShouldBindJSON(&registerVo)
	if err != nil {
		panic(err)
	}
	_userService.Register(registerVo)
	c.JSON(http.StatusOK, common.Ok().SetMessage("注册成功"))
}

func MyTest(c *gin.Context) {
	c.JSON(http.StatusOK, common.Ok().DataKV("user", middle_ware.USER))
}
